package jm.nj.demo07main.demo03;

import jm.nj.demo03mian.demo03.A;

import java.util.ArrayList;

/*
 *增强for循环:
 * JDK1.5之后出现的新特性,底层原理还是一个迭代器
 *
 * Itereator接口的作用:实现这个接口允许对象成为 "foreach" 语句的目标。 才能使用增强for
 *
 * collection接口extends Iterable 接口:作用可以使用增强for
 * collection接口的所有实现类都可以使用增强for
 *
 * 增强for的作用:遍历数组/集合
 *
 * 格式:
 *
 * for(数组/集合中元素的数据类型  变量名:数组名/集合名){
 *       sout(变量名);
 *       }
 * */
public class Demo01Forreach {
    public static void main(String[] args) {
        //method_1();
        //method_2();
        //method_3();
        method_4();
    }

    /*
     *
     * */
    private static void method_4() {
        ArrayList<Person>list = new ArrayList<Person>();
        list.add(new Person("zly",18));
        list.add(new Person("留言",19));
        list.add(new Person("ym",18));
        list.add(new Person("佟ly",21));

        for (Person person : list) {
            System.out.println(person);
            System.out.println(person.getName()+":"+person.getAge());

        }
    }

    /*
     * 增强for遍历整数集合
     * */
    private static void method_3() {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        /*
        for (Integer i : list) {
            System.out.println(i);
        }*/
        /*
         * iter  快捷键
         * */
        for (int i : list) {//自动拆箱    Integer-->int
            System.out.println(i);
        }
    }

    /*
     * 增强for遍历字符串数组
     * */
    private static void method_2() {
        String[] arr = {"你好", "我好", "大家好"};
        for (String s : arr) {
            System.out.println(s);
//可以使用字符串特有的方法
            System.out.println(s.length());
        }
    }

    /*
     * 使用增强for遍历数组
     * 好处:简化了for循环的代码
     * 弊端:没有索引,不能操作集合/数组中的元素
     * */
    private static void method_1() {
        int[] arr1 = {2, 4, 6, 8};
        //普通for
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = arr1[i] * 2;
            System.out.println(arr1[i]);
        }

        System.out.println("arr1[0]:" + arr1[0]);
        System.out.println("-----------");

        //增强for
        int[] arr2 = {2, 4, 6, 8};
        for (int i : arr2) {
            i = i * 2;
            System.out.println(i);
        }
        System.out.println("arr2[0]:" + arr2[0]);
    }
}
